//
//  HomeTableViewController.swift
//  swift版本微博
//
//  Created by 张leslie45 on 16/1/11.
//  Copyright © 2016年 张leslie45. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD

private let HomeCellId = "HomeCellId"

class HomeTableViewController: BaseTableViewController {
    //模型数据
    private lazy var statuses = [Status]()
    override func viewDidLoad() {
        super.viewDidLoad()
        if !userLogin{
            visitorLoginView?.setupUIWithInfo(nil,tipText:"关注一些人,回这里看目的地有什么惊喜")
            //一定要加return
            return
        }
        //1.准备tableView
        prepareTableView()
        //2.加载数据
        loadData()
    }
    
    //准备tableView
    private func prepareTableView(){
        self.tableView.registerClass(StatusCell.self, forCellReuseIdentifier: HomeCellId)
        //1.设置行高为自动计算行高
        //2.设置预估行高
        //3.给tableView的cell的容器视图设置一个 自上而下的约束
        self.tableView.rowHeight = UITableViewAutomaticDimension
        //设置预估行高
        self.tableView.estimatedRowHeight = 300
 
    }
    
    
    
    //加载首页数据
    private func loadData() {
        //url
        let urlString = "https://api.weibo.com/2/statuses/home_timeline.json"
        //在字典添加了一个可选项
        guard let token = UserAccountViewModel().token  else{
            print("用户暂未登陆")
            SVProgressHUD.showErrorWithStatus("请重新登录")
            return
        }
        
        let parameters = ["access_token":token]
        let AFN = AFHTTPSessionManager()
        
        AFN.GET(urlString, parameters: parameters, progress: nil, success: { (_
            , result) -> Void in
//            print("result")
            //转换为字典格式
            guard let dict = result as?[String:AnyObject] else{
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                print("数据结构错误")
                return
            }
            
            guard let array = dict["statuses"] as? [[String:AnyObject]] else{
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                print("数据结构错误")
                return
            }
            
            //定义容器数组
            var tempArray = [Status]()
            //获取必选的字典数组
            //便利数组 字典转模型
            for item in array {
                let s = Status(dict: item)
                //添加元素
                tempArray.append(s)
            }
            
            //执行成功的回调
            self.statuses = tempArray
            self.tableView.reloadData()
            
            }) { (_, error) -> Void in
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                print(error)
        }
        
    }
  
}
//在扩展中实现tableView的数据源方法
extension HomeTableViewController {

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.statuses.count
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        //手写代码 必须手动注册cell
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeCellId, forIndexPath: indexPath) as! StatusCell
        
        //显示文案
//        cell.textLabel?.text = self.statuses[indexPath.row].user?.name
        cell.status = self.statuses [indexPath.row]
        print(self.statuses [indexPath.row].imageURLs?.count)
        return cell
    }
} 







